package com.example.dummbriefgen;

import java.util.Date;
import java.util.Random;

import javax.ejb.Singleton;

@Singleton
public class DummyBriefGenerator {
	private final static long MILLISPERDAY = 24*60*60*1000;
	private LoremIpsum4J lorem = new LoremIpsum4J();
	
	private final static String[] namen = new String[] {
		"Joendhard", "Friedfert", "Vlodomir", "Wilhelmus","Frits", "Frans",
		"Glogomir", 
		"Joghurta", "Friedwalda", "Marizzibel", "Erdmute", "Gutemiene",
		"Heliodora"
	};
	
	private final static String[] betreffe = new String[] {
		"Ihre Anfrage von neulich",
		"Hinweis auf bevorstehendes Erdbeben",
		"Meeting letzten Freitag",
		"Bestellung angekommen",
		"Waschbärenplage im Serverraum",
		"Netzwerkausfall legalisiert",
		"Nachtrag zu eben",
		"Review-Ergebnisse des letzten Sprints",
		"Fehlervorhersage für anstehendes Projekt",
		"DiAgrar GmbH verkauft Ackerflächen in Biebrich"
	};
	
	private final static String[] prefixdinger = new String[] {
		"Re:", "Fwd:", "AW:", "Yo,", "Nachfrage:", "Wichtig!", "Memo:" 
	};
	
	private final static String[] abschlussfloskel = new String[]{
		"Mit vorzüglicher Hochachtung,",
		"Ciao,", "Bis dann,", "Danke für den Fisch und bis morgen",
		"Beste Grüße,","Viele Grüße,","Groetjes,","Hochachtungsvoll,",
		"Mit den besten Wünschen an Sie und Ihr soziales Umfeld,",
		"Halt die Ohren locker!","Auf zum Atom!"
	};
	
	private Random random = new Random();
	
	private String zieheNamen() {
		return namen[random.nextInt(namen.length)];
	}
	
	private String zieheBetreff() {
		return betreffe[random.nextInt(betreffe.length)];		
	}
	
	public DummyBrief machMirEinenBrief(int absaetze) {
		String absender = zieheNamen();
		String adressat = zieheNamen();
		String betreff = zieheBetreff();
		
		if (random.nextInt(10) < 5) {
			int n = random.nextInt(4);
			for (int i=0; i < n; i++) {
				betreff = prefixdinger[random.nextInt(prefixdinger.length)]+ " " + betreff;
			}
		}
		
		Date datum = new Date(new Date().getTime() + ((long)random.nextInt(1000)-800)*MILLISPERDAY);
		
		StringBuffer sb = new StringBuffer(String.format("Hallo %s,\n\n", adressat));
		
		for (String absatz: lorem.getParagraphs(absaetze)) {
			sb.append(absatz).append("\n\n");
		}
		String abflos = abschlussfloskel[random.nextInt(abschlussfloskel.length)];
		sb.append(String.format("%s\n%s",abflos,absender));
		return new DummyBrief(absender,adressat,datum, betreff,sb.toString());
	}

}
